Rust (Hyper) 版とTypeScript版のPiping Serverの違い
#piping-server-rust #piping-server #Piping_Server #Rust #TypeScript
5a8b42c486 時点での話。
追記:上記のコミットから先の時点でも以下のリストに追記をしている。
転送中のパスでも、それと同じパスで新しい転送を開始できる。
ユーザー視点だと、利便性とセキュリティが向上していると思う
転送中でも同じパス使えるし
転送が開始されればどのパスで接続しているか虱潰しに探されることもない
パスを探されても接続拒否されるように守られているいるからデータが漏れる心配はないが、どういうパスを使うかの癖なども情報と捉えれば、その流出を最小限に抑えるという意味でセキュリティ強化
TypeScriptの方では、転送中のパスは新しい転送では使えなかった。
HTTPサーバーのライブラリHyperでの実装の都合上こうなっているが、安全性に問題がないため、今の所この実装。
TypeScriptの方も、この実装にしても良いかもしれない
複数受信は非対応
そこまで致命的ではない。
TypeScript版でもあんまり使ってない機能
頑張れば実装できるかもしれないが、あまり複数受信を使わないため、実装が大変な割に使われないと、そこまで積極的に実装できない。オリジナルを置き換えたくなったら、ちゃんと実装する気がある。
途中でユーザーが接続を切ると、そのパスが使えなくなる。
ユーザー側で対処可能
接続を切った反対側の役割のユーザーがそのパスにPOST/PUTかGETすればもう一度使うことはできる
これはライブラリHyperで接続切れを検出する方法を探しても、見つからないため現在はこのようになっている。
Hyperに関する詳細は RustのHyperでクライアントの接続が閉じたことを知る方法はない?
Multipart非対応
0.9.0にてMultipart対応
https://github.com/nwtgck/piping-server-rust/blob/c8e6ae0fb76d3cc5057f1fa2802ffd8313cf791f/CHANGELOG.md#090---2021-10-13
致命的ではない
ブラウザ上でもJavaScriptを使えばPOST/PUTでBlob(File)が送れる
RustのHyperで使えるMultipartライブラリ調査(問題点とか)とかがあるので、対応するのはだいぶ後とかになりそう。